package com.greenold.order.mapper;

import java.util.List;


import com.greenold.order.domain.Order;
import com.greenold.order.dto.OrderDto;
import com.greenold.order.domain.OrderDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 订单Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-13
 */
public interface OrderMapper
{
    /**
     * 查询订单
     * 
     * @param id 订单主键
     * @return 订单
     */
    public Order selectOrderById(String id);

    /**
     * 查询订单列表
     * 
     * @param order 订单
     * @return 订单集合
     */
    public List<Order> selectOrderList(Order order);

     /**
     * 查询订单内容
     *
     * @param orderDTO 订单DTO
     * @return 订单集合
     */
    public List<OrderDTO> selectOrderInfo(OrderDTO orderDTO);

    /**
     * 新增订单
     * 
     * @param order 订单
     * @return 结果
     */
    public int insertOrder(Order order);

    /**
     * 修改订单
     * 
     * @param order 订单
     * @return 结果
     */
    public int updateOrder(Order order);

    /**
     * 删除订单
     *
     * @param id 订单主键
     * @return 结果
     */
   public int deleteOrderById(String id);


        // 自定义更新状态的方法（自定义取消订单 （手动订单状态和交易状态更改））
    public    int updateOrderStatus(@Param("id") String id,
                              @Param("orderStatus") String orderStatus,
                              @Param("payStatus") String payStatus,
                              @Param("cancelReason") String cancelReason);

//    Order selectById(@Param("id") String id);


    /**
     * 查询：未支付且超过15分钟缓冲期的订单
//     * @param orderStatus 待支付订单状态（0）
//     * @param payStatus 待支付支付状态（0）
     */
    public List<Order> selectUnpaidOrdersOver15Min(
            @Param("orderStatus") String orderStatus,
            @Param("payStatus") String payStatus
    );

    public List<OrderDto> selectOrderListAddElerNameAndCustomerName(Order order);

    //根据订单号查询订单Id
    public Long selectOrderIdBybizOrderNo( String bizOrderNo);
}
